package com.集合.作业;

import com.集合.Collection___.Set_.TreeSet__.TreeSet__;

import java.util.TreeSet;
@SuppressWarnings("all")
/**
 * 如果不传入比较器，会先将该对象的向上转型成Comparable（接口）
 * 如果该对象没有实现 该接口，就会报ClassCastException(类型转换异常)  （注 ： String默认实现）
 *  如果传入比较器 ，就会动态绑定到传入的比较器，可以指定规则；
 * 调用当前对象的CompareTo方法   Comparable<? super K> k = (Comparable<? super K>) key;
 */
public class h5 {
    public static void main(String[] args) {
        TreeSet treeSet = new TreeSet();
        treeSet.add(new A());  //抛异常，类型转换异常；
        /**因为A类没有实现 Compareble接口
         * 将A类对象传进去，且没有指定比较器，执行到下面方法时 就会抛出异常（类型转换异常） 无法向上转型；
         * final int compare(Object k1, Object k2) {
         * comparator==null ? ((Comparable<? super K>) k1).compareTo((K)k2)  :  comparator.compare((K)k1, (K)k2);
         * }
         *
         * 如果A类中实现了该接口，并实现了compareTo方法的话，就会动态绑定到A类的方法；
         */
    }
}

class A implements Comparable<Object> {
    @Override
    public int compareTo(Object o) {
        return 0;
    }
}